---
title: 検索と置換
icon: TextSearch
---

<MetaData
  lang="ja-JP"
  meta={{
    preset: [{
      client: '@univerjs/preset-sheets-find-replace',
      locale: '@univerjs/preset-sheets-find-replace/locales/en-US',
      style: '@univerjs/preset-sheets-find-replace/lib/index.css',
    }],
    plugins: [{
      client: '@univerjs/find-replace',
      locale: '@univerjs/find-replace/locale/en-US',
      style: '@univerjs/find-replace/lib/index.css',
    }, {
      client: '@univerjs/sheets-find-replace',
      facade: '@univerjs/sheets-find-replace/facade',
      locale: '@univerjs/sheets-find-replace/locale/en-US',
    }],
    server: 'No',
  }}
/>

検索と置換機能は、スプレッドシート内の特定の内容をすばやく検索して置換するための機能です。さまざまな一致オプションをサポートし、データ処理の効率化に役立ちます。

<PlaygroundFrame lang="ja-JP" slug="sheets/find-replace" clickToShow />

## プリセットモード

### インストール

```package-install
npm install @univerjs/preset-sheets-find-replace
```

### 使い方

```typescript
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import { UniverSheetsFindReplacePreset } from '@univerjs/preset-sheets-find-replace' // [!code ++]
import UniverPresetSheetsFindReplaceEnUS from '@univerjs/preset-sheets-find-replace/locales/en-US' // [!code ++]
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'

import '@univerjs/preset-sheets-core/lib/index.css'
import '@univerjs/preset-sheets-find-replace/lib/index.css' // [!code ++]

const { univerAPI } = createUniver({
  locale: LocaleType.En_US,
  locales: {
    [LocaleType.En_US]: mergeLocales(
      UniverPresetSheetsCoreEnUS,
      UniverPresetSheetsFindReplaceEnUS, // [!code ++]
    ),
  },
  presets: [
    UniverSheetsCorePreset(),
    UniverSheetsFindReplacePreset(), // [!code ++]
  ],
})
```

## プラグインモード

### インストール

```package-install
npm install @univerjs/find-replace @univerjs/sheets-find-replace
```

### 使い方

```typescript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import { UniverFindReplacePlugin } from '@univerjs/find-replace' // [!code ++]
import FindReplaceEnUS from '@univerjs/find-replace/locale/en-US' // [!code ++]
import { UniverSheetsFindReplacePlugin } from '@univerjs/sheets-find-replace' // [!code ++]
import SheetsFindReplaceEnUS from '@univerjs/sheets-find-replace/locale/en-US' // [!code ++]

import '@univerjs/find-replace/lib/index.css' // [!code ++]

import '@univerjs/sheets-find-replace/facade' // [!code ++]

const univer = new Univer({
  locale: LocaleType.En_US,
  locales: {
    [LocaleType.En_US]: mergeLocales(
      FindReplaceEnUS, // [!code ++]
      SheetsFindReplaceEnUS, // [!code ++]
    ),
  },
})

univer.registerPlugin(UniverFindReplacePlugin) // [!code ++]
univer.registerPlugin(UniverSheetsFindReplacePlugin) // [!code ++]
```

## Facade API

完全な Facade API の型定義は [FacadeAPI](https://reference.univer.ai/en-US) で確認できます。

### テキスト検索器の作成

`univerAPI.createTextFinderAsync()` はテキスト検索器を作成し、`FTextFinder` インスタンスを返します。

以下は [`FTextFinder`](https://reference.univer.ai/en-US/classes/FTextFinder) の主なメソッドです。

| メソッド | 説明 |
| ------ | ----------- |
| findAll | 現在のシートで一致したすべてのセルを取得します。現在の一致セルは最後に見つかったセルになります。 |
| findNext | 現在のシートの次の一致セルを取得します。存在する場合は次の一致セルを返し、現在の一致セルを次の一致セルに移動します。 |
| findPrevious | 現在のシートの前の一致セルを取得します。存在する場合は前の一致セルを返し、現在の一致セルを前の一致セルに移動します。 |
| getCurrentMatch | 現在のシートの現在の一致セルを取得します。 |
| matchCaseAsync | 大文字小文字の一致オプションを設定します。true の場合は大文字小文字を区別して検索し、false の場合は区別しません。 |
| matchEntireCellAsync | セル全体一致オプションを設定します。true の場合はセルの値全体と一致させ、false の場合は部分一致を許可します。 |
| matchFormulaTextAsync | 数式テキストの一致オプションを設定します。true の場合は数式テキストと一致させ、false の場合は値と一致させます。 |
| replaceAllWithAsync | 一致したすべてのテキストを指定されたテキストに置換します。 |
| replaceWithAsync | 現在の一致テキストを指定されたテキストに置換します。 |
| ensureCompleteAsync | 検索操作が完了していることを確認します。特に現在のシートが変更された場合は、このメソッドで検索操作の完了を保証してください。 |

```typescript
// 現在のシートが空であると仮定します。
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getActiveSheet()

// 範囲 A1:D10 に値を設定します。
const fRange = fWorksheet.getRange('A1:D10')
fRange.setValues([
  [1, 2, 3, 4],
  [2, 3, 4, 5],
  [3, 4, 5, 6],
  [4, 5, 6, 7],
  [5, 6, 7, 8],
  [6, 7, 8, 9],
  [7, 8, 9, 10],
  [8, 9, 10, 11],
  [9, 10, 11, 12],
  [10, 11, 12, 13],
])

// テキスト '5' を検索するテキストファインダーを作成します。
const textFinder = await univerAPI.createTextFinderAsync('5')

// テキスト '5' を含むすべてのセルを見つけます。
const matchCells = textFinder.findAll()
matchCells.forEach((cell) => {
  cell.getA1Notation() // 例: D2, C3, B4, A5
})
```
